package main

import (
	"embed"
	"fmt"
	"math/rand"
	"net/http"
	"strings"
	"time"
)

//go:embed hitokoto.txt
var content embed.FS

// 获取随机句子的处理函数
func getRandomSentence(w http.ResponseWriter, r *http.Request) {
	// 从嵌入的文件系统中读取文件内容
	data, err := content.ReadFile("hitokoto.txt")
	if err != nil {
		http.Error(w, fmt.Sprintf("读取文件失败: %v", err), http.StatusInternalServerError)
		return
	}

	// 将文件内容按行拆分
	lines := strings.Split(string(data), "\n")

	// 随机初始化
	rand.Seed(time.Now().Unix())

	// 从随机位置选择一行
	randomSentence := lines[rand.Intn(len(lines))]

	// 设置响应内容类型为 JSON
	w.Header().Set("Content-Type", "application/json")

	// 返回随机的句子
	fmt.Fprintf(w, `{"sentence": "%s"}`, randomSentence)
}

func main() {
	// 设置路由和处理函数
	http.HandleFunc("/sentence", getRandomSentence)

	// 启动 HTTP 服务器
	port := "1314"
	fmt.Printf("服务器启动在 %s端口，地址：http://localhost:%s/sentence\n", port, port)
	if err := http.ListenAndServe(":"+port, nil); err != nil {
		fmt.Println("服务器启动失败:", err)
	}
}
